#ifndef KEYPARSE_H
#define KEYPARSE_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

// 句柄类型定义
typedef void* KeyParseHandle;

// 错误代码
typedef enum {
    KEYPARSE_SUCCESS = 0,
    KEYPARSE_ERROR_INIT_FAILED,
    KEYPARSE_ERROR_INVALID_INPUT,
    KEYPARSE_ERROR_PREPROCESS_FAILED,
    KEYPARSE_ERROR_TOKENIZATION_FAILED,
    KEYPARSE_ERROR_GROUPING_FAILED,
    KEYPARSE_ERROR_TEMPLATE_GENERATION_FAILED,
    KEYPARSE_ERROR_MEMORY_ALLOCATION,
    KEYPARSE_ERROR_FILE_OPERATION
} KeyParseError;

// 日志级别
typedef enum {
    KEYPARSE_LOG_DEBUG,
    KEYPARSE_LOG_INFO,
    KEYPARSE_LOG_WARNING,
    KEYPARSE_LOG_ERROR
} KeyParseLogLevel;

// 日志回调函数类型
typedef void (*KeyParseLogCallback)(KeyParseLogLevel level, const char* message);

// 初始化函数
KeyParseHandle keyparse_init();

// 处理单条日志
KeyParseError keyparse_process(KeyParseHandle handle, const char* log_line, 
                              char** group_key, char** template_str);

// 批量处理日志文件
int keyparse_process_file(KeyParseHandle handle, const char* input_file, 
                         const char* output_file);

// 释放资源
void keyparse_free(KeyParseHandle handle);

// 释放字符串内存
void keyparse_free_string(char* str);

// 设置日志回调函数
void keyparse_set_log_callback(KeyParseLogCallback callback);

// 获取错误信息
const char* keyparse_error_message(KeyParseError error);

#ifdef __cplusplus
}
#endif

#endif // KEYPARSE_H